/**
 * @param {string} s
 * @return {string}
 */
// 给你一个字符串 s ，请你去除字符串中重复的字母，使得每个字母只出现一次。需保证 返回结果的字典序最小（要求不能打乱其他字符的相对位置）。

// 示例 1：

// 输入：s = "bcabc"
// 输出："abc"
// 示例 2：

// 输入：s = "cbacdcbc"
// 输出："acdb"
var removeDuplicateLetters = function (s) {
  let stack = [], i = -1
  while (++i < s.length) {
    const n = s[i]
    if (stack.includes(n) === false) {
      let j = stack.length
      // string.includes(searchString[, position])
// 其中，searchString 是要搜索的子串，position 是可选参数，表示搜索的起始位置，默认是从字符串的首位开始搜索。
      while (j-- && stack[j] > n && s.includes(stack[j], i)) stack.pop()
      stack.push(n)
    }
  }
  return stack.join('')
};
console.log(removeDuplicateLetters("bcabc"));
